﻿using ProyectoDeTesis.Controladores;
using ProyectoDeTesis.Modelos.Filtros;
using System;
using System.Linq;
using System.Collections.Generic;
using System.Windows.Forms;

namespace ProyectoDeTesis.Vistas
{
    public partial class Vuelo : Form
    {
        private int pantalla_id = 13;
        private VueloController vueloController = new VueloController();
        private int vuelo_id_seleccionado = 0;

        public Vuelo()
        {
            InitializeComponent();
            rdtFechaInicio.Value = DateTime.Now.Date;
            rdtFechaFin.Value = DateTime.Now.Date;
        }

        private void BtnEditarVuelo_Click(object sender, EventArgs e)
        {
            if (this.vuelo_id_seleccionado > 0)
            {
                EditarVuelo editar = new EditarVuelo(this.vuelo_id_seleccionado);
                editar.ShowDialog(this);
                if (editar.resultadoVentana)
                {
                    cargarTabla();
                }
            }
            else
            {
                FormError form = new FormError("Debe seleccionar una fila primero");
                form.ShowDialog(this);
            }
        }

        private void cargarTabla()
        {
            FiltroVuelo filtroVuelo = new FiltroVuelo();
            filtroVuelo.fecha_inicio = rdtFechaInicio.Value;
            filtroVuelo.fecha_fin = rdtFechaFin.Value.AddDays(1);
            filtroVuelo.vuelo = tbxVuelo.Text;

            mostrarDatosTabla(filtroVuelo);
        }

        private void BtnRemoveVuelo_Click(object sender, EventArgs e)
        {
            if (this.vuelo_id_seleccionado > 0)
            {
                vueloController.cancelarVuelo(vuelo_id_seleccionado);
                FormAceptar aceptar = new FormAceptar("Se canceló el vuelo exitosamente");
                aceptar.ShowDialog(this);
                cargarTabla();
            }
            else
            {
                FormError form = new FormError("Debe seleccionar una fila primero");
                form.ShowDialog(this);
            }
        }

        private void BtnNuevo_Click(object sender, EventArgs e)
        {
            NuevoVuelo nuevoVuelo = new NuevoVuelo();
            nuevoVuelo.ShowDialog(this);
            cargarTabla();
        }

        private void BtnSearch_Click(object sender, EventArgs e)
        {
            cargarTabla();            
        }

        private void mostrarDatosTabla(FiltroVuelo filtroVuelo)
        {
            List<ProyectoDeTesis.Vuelo> listaVuelo = vueloController.obtenerVuelos(filtroVuelo);

            dgvResultados.DataSource = listaVuelo;
            dgvResultados.Columns[0].Visible = false;
            dgvResultados.Columns[1].HeaderText = "Numero de vuelo";
            dgvResultados.Columns[2].HeaderText = "Tipo de Avión";
            dgvResultados.Columns[3].HeaderText = "Tipo de vuelo";
            dgvResultados.Columns[4].Visible = false;
            dgvResultados.Columns[5].HeaderText = "Destino";
            dgvResultados.Columns[6].HeaderText = "Nombre de Aeropuerto";
            dgvResultados.Columns[7].HeaderText = "Fecha de Salida";
            dgvResultados.Columns[8].HeaderText = "Hora de Salida";
            dgvResultados.Columns[9].HeaderText = "Fecha de LLegada";
            dgvResultados.Columns[10].HeaderText = "Hora de Llegada";
            dgvResultados.Columns[11].Visible = false;
            dgvResultados.Columns[12].Visible = false;
            dgvResultados.Columns[13].Visible = false;
            dgvResultados.Columns[14].Visible = false;
            dgvResultados.Columns[15].Visible = false;
            dgvResultados.Columns[16].Visible = false;
            dgvResultados.Columns[17].Visible = false;
            dgvResultados.Columns[1].Width = 80;
            dgvResultados.Columns[2].Width = 80;
            dgvResultados.Columns[3].Width = 80;
            dgvResultados.Columns[5].Width = 140;
            dgvResultados.Columns[6].Width = 200;
            dgvResultados.Columns[7].Width = 90;
            dgvResultados.Columns[8].Width = 90;
            dgvResultados.Columns[9].Width = 90;
            dgvResultados.Columns[10].Width = 90;
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void BtnLimpiar_Click(object sender, EventArgs e)
        {
            tbxVuelo.Clear();
            rdtFechaInicio.Value = DateTime.Now.Date;
            rdtFechaFin.Value = DateTime.Now.Date;
        }

        private void dgvResultados_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            
        }

        private void dgvResultados_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex > -1)
            {
                DataGridViewRow row = dgvResultados.Rows[e.RowIndex];

                vuelo_id_seleccionado = Convert.ToInt32(row.Cells[0].Value);
            }
        }
    }
}
